package demo5;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @Component注解，被该注解标注的类，都会被spring管理，
 * @Controller注解，被该注解标注的类，会被spring管理，并且，类中的方法，也会被spring管理，
 * @Service注解，被该注解标注的类，会被spring管理，并且，类中的方法，也会被spring管理，
 * @Repository注解，被该注解标注的类，会被spring管理，并且，类中的方法，也会被spring管理，
 *
 * 如果没有特殊作用使用，则默认为@Component
 */
@Controller//将本类交给spring管理,
//@Component//将本类交给spring管理
//@Service
//@Repository//数据持久层，数据库打交道，受Spring管理
public class Person {
    /**
     * @Autowired//自动注入
     * Spring中的开发模式，A使用B，B被作为属性定义在A中
     * 接口类型，便于更换多个接口
     *
     * Spring框架支持java原生提供的@Resource注解，作为依赖注入
     *
     */
//    @Autowired//自动注入
    @Resource(name = "shirt")//不是Spring的注解，是java原生提供的
                             //name="类名首字母要小写"
                             //整体看可以选择的注入方式多，但时解决装配冲突的问题时缺点相同
//    @Qualifier("shrit")
//    private Clothes clothes;
    private Clothes sweater;
    public void play(){
        sweater.wear();
        System.out.println("出去玩！");
    }
}
